Dyk ner i CSS Custom Highlight API och lÀr dig revolutionera stilen pÄ textmarkeringar i dina webbprojekt. Skapa unika och engagerande anvÀndarupplevelser.
Ta ditt grÀnssnitt till nÀsta nivÄ: BemÀstra CSS Custom Highlight API för att styla textmarkeringar
Under mÄnga Är har styling av textmarkeringar pÄ webben varit en ganska begrÀnsad historia. Vi har i stort sett varit begrÀnsade till webblÀsarens standardstyling, eller i bÀsta fall en enkel Àndring av bakgrunds- och textfÀrg. Men CSS Custom Highlight API förÀndrar allt. Det ger ett kraftfullt och flexibelt sÀtt att helt anpassa utseendet pÄ markerad text, vilket öppnar upp en helt ny vÀrld av möjligheter för UI-design och anvÀndarengagemang.
Vad Àr CSS Custom Highlight API?
CSS Custom Highlight API Àr en uppsÀttning CSS-funktioner som lÄter utvecklare styla textmarkeringar med anpassade stilar utöver den grundlÀggande bakgrunds- och textfÀrgen. Det introducerar pseudo-elementet ::highlight och relaterade egenskaper, vilket gör att du kan rikta in dig pÄ specifika typer av textmarkeringar och tillÀmpa unik styling pÄ dem. Detta API förbÀttrar anvÀndarupplevelsen avsevÀrt genom att möjliggöra mer visuellt tilltalande och informativa markeringar.
Nyckelfunktioner i CSS Custom Highlight API:
::highlightpseudo-element: Hörnstenen i API:et, som lÄter dig rikta in dig pÄ markerad text.- Namngivna markeringar: Skapa anpassade markeringsnamn och applicera dem pÄ specifika element.
selection-markeringen: En standardmarkering som representerar anvÀndarens grundlÀggande textmarkering.- FörbÀttrad tillgÀnglighet: Skapa mer visuellt distinkta och hjÀlpsamma markeringar för anvÀndare med synnedsÀttningar.
WebblÀsarkompatibilitet
I slutet av 2023/början av 2024 vĂ€xer webblĂ€sarstödet för CSS Custom Highlight API men Ă€r Ă€nnu inte universellt. Stora webblĂ€sare som Chrome och Edge har bra stöd. Safari-stöd finns men kan vara begrĂ€nsat beroende pĂ„ version. Kontrollera alltid caniuse.com för den senaste informationen om webblĂ€sarkompatibilitet innan du implementerar API:et i en produktionsmiljö. ĂvervĂ€g att anvĂ€nda progressiv förbĂ€ttring för att sĂ€kerstĂ€lla att din webbplats förblir funktionell för anvĂ€ndare med Ă€ldre webblĂ€sare.
GrundlÀggande anvÀndning: Styla standardtextmarkeringen
LÄt oss börja med ett enkelt exempel pÄ hur man stylar standardtextmarkeringen med pseudo-elementet ::highlight.
Exempel: Ăndra bakgrunds- och textfĂ€rg
Det hÀr exemplet visar hur man Àndrar bakgrunds- och textfÀrgen pÄ den markerade texten.
::highlight {
background-color: #FFFF00; /* Gul */
color: #000000; /* Svart */
}
I denna CSS-kod riktar vi in oss pÄ standardtextmarkeringen med ::highlight och stÀller in dess bakgrundsfÀrg till gul (#FFFF00) och textfÀrg till svart (#000000). Detta ger ett grundlÀggande men effektivt sÀtt att anpassa utseendet pÄ markerad text.
Skapa anpassade markeringsnamn
Den verkliga kraften i CSS Custom Highlight API ligger i dess förmÄga att definiera anpassade markeringsnamn. Detta gör att du kan rikta in dig pÄ specifika element eller sektioner pÄ din webbplats och tillÀmpa unik styling pÄ deras textmarkeringar.
Exempel: Markera kodavsnitt
LÄt oss sÀga att du vill markera kodavsnitt annorlunda Àn vanlig text pÄ din webbplats. Du kan uppnÄ detta genom att skapa ett anpassat markeringsnamn.
- Definiera ett anpassat markeringsnamn: AnvÀnd
highlight()-funktionen för att definiera ett anpassat markeringsnamn i din CSS. - Applicera markeringsnamnet pÄ element: AnvÀnd pseudo-elementet
::highlight(ditt-markerings-namn)för att rikta in dig pÄ specifika element och tillÀmpa den anpassade stylingen.
/* Definiera ett anpassat markeringsnamn för kodavsnitt */
::highlight(code-highlight) {
background-color: #ADD8E6; /* LjusblÄ */
color: #00008B; /* MörkblÄ */
font-weight: bold;
}
/* Applicera markeringsnamnet pÄ code-element */
code::highlight(code-highlight) {
/* Stilen appliceras endast nÀr text markeras *inuti* en -tagg */
}
/* Applicera markeringen pÄ span-element med en specifik klass */
.highlighted-code::highlight(code-highlight) {
}
I det hÀr exemplet har vi definierat ett anpassat markeringsnamn som heter code-highlight. Vi har sedan applicerat denna markering pÄ code-element. BakgrundsfÀrgen Àr satt till ljusblÄ (#ADD8E6), textfÀrgen Àr satt till mörkblÄ (#00008B), och teckensnittsvikten Àr satt till fet. Nu, nÀr text markeras inuti ett code-element, kommer den att stylas med dessa anpassade stilar.
Avancerad anvÀndning: Rikta in sig pÄ specifika textintervall
CSS Custom Highlight API kan ocksÄ anvÀndas för att rikta in sig pÄ specifika textintervall inom ett element. Detta möjliggör Ànnu mer detaljerad kontroll över stylingen av textmarkeringar.
Exempel: Markera söktermer
FörestÀll dig att du vill markera söktermer i ett dokument. Detta krÀver ofta JavaScript i kombination med CSS Highlight API.
- AnvÀnd JavaScript för att identifiera söktermer: AnvÀnd JavaScript för att hitta alla förekomster av söktermen i dokumentet.
- Skapa markeringsintervall: AnvÀnd
Range-API:et i JavaScript för att skapa intervall för varje förekomst av söktermen. - Applicera markeringen: AnvÀnd metoden
CSS.highlights.set()för att applicera markeringen pÄ de skapade intervallen.
// JavaScript-kod för att markera söktermer
function highlightSearchTerms(searchTerm) {
// Definiera först den anpassade markeringen i CSS
const highlightName = 'search-highlight';
const ranges = [];
// Hitta alla textnoder
function findTextNodes(el) {
let n, a=[], walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
while(n=walk.nextNode()) a.push(n);
return a;
}
const textNodes = findTextNodes(document.body);
textNodes.forEach(node => {
let nodeValue = node.nodeValue;
let index = nodeValue.indexOf(searchTerm);
while (index !== -1) {
const range = document.createRange();
range.setStart(node, index);
range.setEnd(node, index + searchTerm.length);
ranges.push(range);
index = nodeValue.indexOf(searchTerm, index + searchTerm.length);
}
});
// Applicera markeringarna med CSS.highlights.set()
if (CSS.highlights && CSS.highlights.set) {
CSS.highlights.set(highlightName, ranges);
} else {
console.warn('CSS Custom Highlight API stöds inte fullt ut i denna webblÀsare. TillhandahÄller fallback');
// TillhandahÄll en fallback för webblÀsare med begrÀnsat stöd (t.ex. Àldre Safari)
ranges.forEach(range => {
const span = document.createElement('span');
span.style.backgroundColor = '#FFA07A'; // Ljus lax
span.style.color = '#000000'; // Svart
span.className = 'search-highlight-fallback'; // LÀgg till en klass för fallback-styling
range.surroundContents(span);
});
}
}
// CSS-kod för att styla sökmarkeringen
::highlight(search-highlight) {
background-color: #FFA07A; /* Ljus lax */
color: #000000; /* Svart */
}
/* Fallback-styling för webblÀsare som inte fullt ut stöder API:et */
.search-highlight-fallback {
background-color: #FFA07A;
color: #000000;
}
// ExempelanvÀndning: markera termen "exempel"
highlightSearchTerms("exempel");
Detta kodavsnitt visar hur man markerar söktermer i ett dokument med hjÀlp av JavaScript och CSS Custom Highlight API. JavaScript-koden identifierar söktermerna, skapar intervall för varje förekomst och applicerar search-highlight pÄ dessa intervall. CSS-koden stylar sedan den markerade texten med en ljus laxfÀrgad bakgrund och svart text.
Viktig anmÀrkning: Denna metod krÀver JavaScript och förlitar sig pÄ CSS.highlights-API:et. Eftersom stödet inte Àr universellt visas en fallback-mekanism (som att omge texten med en `span` och styla den `span`-taggen).
TillgÀnglighetsaspekter
NÀr du anvÀnder CSS Custom Highlight API Àr det avgörande att ta hÀnsyn till tillgÀnglighet för att sÀkerstÀlla att din webbplats Àr anvÀndbar för alla, inklusive anvÀndare med funktionsnedsÀttningar.
Tips för tillgÀnglig styling av textmarkeringar:
- SÀkerstÀll tillrÀcklig kontrast: UpprÀtthÄll tillrÀcklig kontrast mellan bakgrunds- och textfÀrgen pÄ den markerade texten för att göra den lÀsbar för anvÀndare med synnedsÀttningar. WCAG-riktlinjerna rekommenderar ett kontrastförhÄllande pÄ minst 4.5:1 för normal text.
- Förlita dig inte enbart pÄ fÀrg: Förlita dig inte enbart pÄ fÀrg för att indikera textmarkering. AnvÀnd ytterligare visuella ledtrÄdar, som understrykning eller fetstil, för att göra markeringen tydligare.
- TillhandahÄll alternativ styling för högkontrastlÀge: AnvÀndare som aktiverar högkontrastlÀge i sitt operativsystem kan ÄsidosÀtta dina anpassade stilar. TillhandahÄll alternativ styling som fungerar bra i högkontrastlÀge för att sÀkerstÀlla lÀsbarheten. Du kan anvÀnda mediafrÄgor som
@media (forced-colors: active)för att upptÀcka nÀr högkontrastlÀge Àr aktiverat. - Testa med hjÀlpmedelsteknik: Testa din webbplats med hjÀlpmedelsteknik, som skÀrmlÀsare, för att sÀkerstÀlla att den markerade texten meddelas och förstÄs korrekt.
Exempel: SÀkerstÀlla tillrÀcklig kontrast
::highlight {
background-color: #000080; /* MarinblÄ */
color: #FFFFFF; /* Vit */
}
I det hÀr exemplet har vi valt en marinblÄ bakgrundsfÀrg och vit textfÀrg, vilket ger tillrÀcklig kontrast för anvÀndare med synnedsÀttningar. AnvÀnd alltid en fÀrgkontrastkontroll för att verifiera att dina fÀrgval uppfyller tillgÀnglighetsstandarder. Verktyg som WebAIM's Contrast Checker kan vara till hjÀlp.
Praktiska exempel och anvÀndningsfall
CSS Custom Highlight API erbjuder ett brett spektrum av möjligheter för att förbÀttra anvÀndarupplevelsen. HÀr Àr nÄgra praktiska exempel och anvÀndningsfall:
- Kodmarkering: Som visats tidigare kan du anvÀnda API:et för att markera kodavsnitt med anpassade stilar, vilket gör dem mer visuellt tilltalande och lÀttare att lÀsa.
- Markering av söktermer: Markera söktermer i ett dokument för att hjÀlpa anvÀndare att snabbt hitta den information de letar efter.
- Felmarkering: Markera fel eller varningar i formulÀr eller andra anvÀndargrÀnssnitt för att dra anvÀndarens uppmÀrksamhet till dem.
- Citatmarkering: Markera citerad text i akademiska uppsatser eller artiklar för att visuellt skilja den frÄn huvudinnehÄllet.
- Konversationsmarkering: I chattapplikationer, markera anvÀndarens egna meddelanden eller meddelanden frÄn specifika anvÀndare för att göra dem lÀttare att följa.
- Spelifiering: Markera specifika ord eller fraser i ett spel för att ge ledtrÄdar eller tips till spelaren.
- Textsammanfattning: Markera nyckelmeningar eller fraser i ett dokument för att ge en snabb sammanfattning av innehÄllet. Detta involverar ofta komplexa algoritmer för att bestÀmma betydelse.
BĂ€sta praxis och tips
För att fÄ ut det mesta av CSS Custom Highlight API, följ dessa bÀsta praxis och tips:
- AnvÀnd beskrivande markeringsnamn: VÀlj beskrivande markeringsnamn som tydligt indikerar syftet med markeringen. Detta kommer att göra din kod mer lÀsbar och underhÄllbar. AnvÀnd till exempel
code-highlightistÀllet förhighlight-1. - HÄll stilen konsekvent: UpprÀtthÄll en konsekvent stil över alla dina markeringar för att skapa en sammanhÀngande anvÀndarupplevelse. AnvÀnd ett designsystem eller en stilguide för att sÀkerstÀlla konsistens.
- Undvik överanvĂ€ndning av markeringar: ĂveranvĂ€nd inte markeringar, eftersom detta kan vara distraherande och övervĂ€ldigande för anvĂ€ndare. AnvĂ€nd dem sparsamt och strategiskt för att uppmĂ€rksamma den viktigaste informationen.
- Testa pÄ olika enheter och webblÀsare: Testa din webbplats pÄ olika enheter och webblÀsare för att sÀkerstÀlla att dina anpassade markeringar visas korrekt. Var sÀrskilt uppmÀrksam pÄ mobila enheter och Àldre webblÀsare.
- TĂ€nk pĂ„ prestanda: Ăven om CSS Custom Highlight API generellt sett har god prestanda, var medveten om antalet markeringar du anvĂ€nder, sĂ€rskilt pĂ„ stora dokument. För mĂ„nga markeringar kan pĂ„verka prestandan. Om du anvĂ€nder JavaScript för att hantera markeringar, optimera din kod för att minimera antalet DOM-manipulationer.
- AnvĂ€nd progressiv förbĂ€ttring: Eftersom webblĂ€sarstödet inte Ă€r universellt, anvĂ€nd tekniker för progressiv förbĂ€ttring. Implementera en fallback-mekanism med standard CSS-styling för att sĂ€kerstĂ€lla att upplevelsen förblir anvĂ€ndbar för dem med Ă€ldre webblĂ€sare. ĂvervĂ€g att anvĂ€nda funktionsdetektering (t.ex. kontrollera förekomsten av `CSS.highlights`) för att avgöra om du ska anvĂ€nda API:et eller fallback-lösningen.
Slutsats
CSS Custom Highlight API Àr ett kraftfullt verktyg för att förbÀttra anvÀndarupplevelsen och skapa mer visuellt tilltalande och informativa textmarkeringar. Genom att bemÀstra detta API kan du ta din UI-design till nÀsta nivÄ och ge anvÀndarna en mer engagerande och tillgÀnglig webbupplevelse. Medan webblÀsarstödet fortfarande utvecklas, kommer förstÄelse och experimenterande med detta API nu att positionera dig för att skapa banbrytande webbupplevelser nÀr antagandet vÀxer. Kom ihÄg att prioritera tillgÀnglighet och tillhandahÄlla fallbacks för Àldre webblÀsare för att sÀkerstÀlla en positiv upplevelse för alla anvÀndare.